|
|
הוסיפו מידע על מעסיק
|
מהנדס תוכנה
|
|
שאלות מראיונות עבודה לתפקיד
|
|
|
|
|
Theworker >
תוכנה
>
פירוט שאלות מראיונות עבודה לתפקיד מהנדס תוכנה
פירוט שאלות מראיונות עבודה לתפקיד מהנדס תוכנה
1250 - 1241 מתוך 1494
|
|
|
|
ראיון לתפקיד מהנדס תוכנה
בחברת גוגל
ספטמבר 2016
|
09.11.2016
|
|
|
פרטים לגבי התהליך |
ראיון ראשון רק שאלות מקצועיות, בעיקר מבני נתונים |
|
שאלות מתוך הראיון |
מקבלים סטרים אינסופי של ביטים שמייצגים מטריצה, כשבכל פעם "דוחפים" את הביט הימני תחתון כל אחד עובר מקום והשמאלי עליון נזרק החוצה.
לכתוב פונקציה יעילה שקובעת אם יש שורה של אפסים או אחדים |
|
|
|
|
הוסף מידע על החברה
|
עוד מידע על גוגל :
|
|
|
ראיון לתפקיד מהנדס תוכנה
בחברת אימפרבה
ינואר 2016
|
28.10.2016
|
|
|
פרטים לגבי התהליך |
יש ראיון ארוך של משאבי אנוש ואז ראיון מקצועי |
|
שאלות מתוך הראיון |
1) רוצים לשמור אלפון שמות של תושבי מדינת ישראל בצורה יעילה. יש להגדיר מבנה נתונים שישמור אותם.
2) מדוע ואיך מגנים במקרה של כמה threads? |
|
תשובות |
הוסף תשובה
|
לצפיה בתשובות
|
|
|
|
|
אוקטובר 2016
|
|
1) Hashtable. הבעיה היא שייתכנו התנגשויות לכן יש צורך להחזיק בכל כניסה רשימה של איברים. אז למעשה יש לנו טבלה של מצביעים.
2) ייתכן ש-2 Threads יבצעו חיפוש בטבלה ושניהם יכניסו את אותו האיבר למערכת ואז יהיה לנו עותק של איברים. הגנה עושים ע"י החזקת מנעול בתחילת כל רשימה – אפשר להגדיר struct שמכיל את ראש הרשימה ואת המנעול שלה. יש לשים לב שאסור לנעול את כל הטבלה אלא רק את הכניסה הרלוונטית
|
|
|
|
|
|
|
הוסף מידע על החברה
|
עוד מידע על אימפרבה :
|
|
|
ראיון לתפקיד מהנדס תוכנה
בחברת יבמ
ינואר 2016
|
28.10.2016
|
|
|
פרטים לגבי התהליך |
יש מבחן בכתב יד באורך שעתיים |
|
שאלות מתוך הראיון |
1) שאלה עם 2 threads שאחד מאותת לשני להפסיק דרך משתנה גלובלי אבל השני לא תמיד מפסיק.
2) מגדירים קוד:
Class A
{
public:
Virtual void f();
Virtual void g();
}
Class B
{
public:
Virtual void g();
Virtual void f();
}
איזה פונקציה תיקרא אם נבצע:
A* a = (A*)new B
a->f()
אני חשבתי שלא ייתכן שמחלקות שאינן קשורות אחת לשנייה (אין ירושה) בכלל יכולות להצביע ככה. מסתבר שה-vptr של מצביע A רואה את הפונקציות של B.
3) נתון מערך של מחרוזות (בפועל אפשר גם מספרים רק רוצים כנראה לראות שימוש נכון בstrcmp) אשר במקור היה ממוין וביצעו עליו הזזה. צריך לגלות איפה הייתה ההזזה למשל: 5,6,7,1,2,3
המקורי היה: 1,2,3,4,5,6 לכן אינדקס ההזזה הוא 2 (המקום של המספר 7 במערך המוזז)
חשוב לבצע זאת בo(n)
4) שאלות הכלליות על COM, השאלות על DLL די מעמיקות. יש שאלות על windowshandles. |
|
תשובות |
הוסף תשובה
|
לצפיה בתשובות
|
|
|
|
|
אוקטובר 2016
|
|
1) הבעיה היא שחסר volatile
2) אפשר לבדוק בבית וכעקרון תיקרא g של B. מסתבר שה-vptr של מצביע A רואה את הפונקציות של B
3) נבדוק במערך המוזז מי הערך הכי קטן ע"י שימוש בפונקציה strcmp. אח"כ לבדוק באיזה אינדקס הוא נמצא ולהחזיר את האינדקס שלפניו. מקרה קצה הוא להחזיר את האינדקס לפני 0 שזה בעצם גודל המערך פחות 1.
|
|
|
|
|
|
|
הוסף מידע על החברה
|
עוד מידע על יבמ :
|
|
|
ראיון לתפקיד מהנדס תוכנה
בחברת ויז'נמפ
ינואר 2016
|
28.10.2016
|
|
|
פרטים לגבי התהליך |
יש ראיון טלפוני ואם עוברים אותו אז יש ראיון מקצועי |
|
שאלות מתוך הראיון |
בראיון הטלפוני:
1) ההבדל בין וקטור לרשימה
2) איך מממומשת הגדלה של וקטור
3) מה ההבדל בין וקטור ורשימה לבין hashtable
4) כשה-dtor לא וירטואלי מה הבעיה חוץ מזליגת זיכרון
5) מה יקרה אם נגדיר פונקציה: char* func() { return string.c_str()} ואז נבצע
char* t = func()
6) למרות שלא מומלץ אבל מה יקרה אם נגדיר int* a = &(int*)17 ואז נבצע
printf("%d",a+3)
בראיון המקצועי:
1) כתוב פונקציה שהופכת מחרוזת
2) איך מתגברים על מצב שבו פונקציה מקצה מצביע מקומי עם הקצאה דינמית ואז יש קריסה? ומה קורה אם יש return באמצע הפונקציה?
3) לכתוב מחלקה שמממשת unique_ptr
4) לכתוב מחלקת shared_ptr
5) איך מתגברים על exception במקרה של הקריאה הזו:
func(sharedptr(new x),sharedPtr(new y) |
|
תשובות |
הוסף תשובה
|
לצפיה בתשובות
|
|
|
|
|
אוקטובר 2016
|
|
טלפוני:
1)וקטור הוא רציף ופחות דינמי. רשימה היא לא רציפה אבל דינמית.
2)ביצירת הוקטור מוגדר capacity שזה המקום שנשמר מראש עבור הוקטור גם אם הגודל שהגדרנו יותר קטן. ברגע שמגיעים לקיבולת הזו מבצעים הקצאה מחדש בגודל כפול ולשם מעתיקים את המידע.
3)מפה היא ממומשת בעזרת עץ אדום-שחור שמאפשר שליפה מהירה ע"י logn
4) תפקידו גם לסגור כל מיני handles למשל לקבצים.
5) למעשה t מחזיק מצביע למקום שכבר נעלם כאשר הפונקציה הסתיימה. מדובר ב-dangling pointer
6) יודפס המספר 29 כי בהנחה שהמצביע הוא32 4 בתים אנחנו מתקדמים 12 בתים מעבר ל17
מקצועי:
1) חשוב לבדוק אם הפרמטר הוא null, לבדוק שגודל הפרמטר אינו 0
2) עושים try+catch. לגבי return אפשר להשתמש ב-unique_ptr
3) אסור שיהיה copy ctor, אופרטור השמה משתמש ב-Move
4) יש להחזיק משתנה counter ולהצביע אליו. חייבים להשתמש ב-copy ctr
5) נשים לב שסדר יצירת המשתנים לא ידוע ולכן אם יש exception ביצירת אחד המשתנים תיתכן זליגה במשתנה אחר לכן צריך ליצור פונקציה סטטית Init שתיקרא מהמצביע ותקבל new x וככה נשמור בכוח על סדר הקריאות
|
|
|
|
|
|
|
הוסף מידע על החברה
|
עוד מידע על ויז'נמפ :
|
|
|
ראיון לתפקיד מהנדס תוכנה
בחברת אינטל
פברואר 2010
|
11.10.2016
|
|
|
פרטים לגבי התהליך |
בהגעה מקבלים טופס עם כמה שאלות
אציג אחת מהן |
|
שאלות מתוך הראיון |
יש למיין מערך כדורים חד-ממדי באורך סופי n ובו שלושה צבעים: אדום כחול וירוק כך שכל הכדורים האדומים בצד ימין, כל הכדורים הכחולים בצד שמאל וכל הכדורים הירוקים ביניהם.
דרישות נוספת: סיבוכיות מקום\זכרון O(1) ,
מותר להסתכל בכל תא במערך פעם אחת בלבד. |
|
תשובות |
הוסף תשובה
|
לצפיה בתשובות
|
|
|
|
|
אוקטובר 2016
|
|
עבודה עם 3 מצביעים – 2 "סטטיים" ואחד שסורק את המערך. red, blue ,cur.
רעיון האלגוריתם : כל מה שמימין ל- blue הוא כחול.
כל מה שמשמאל ל- red הוא אדום.
מה שבין red ל blue בהכרח יהיה ירוק.
|
|
|
|
|
|
|
הוסף מידע על החברה
|
עוד מידע על אינטל :
|
|
|
ראיון לתפקיד מהנדס תוכנה
בחברת קמינריו
אוגוסט 2016
|
11.10.2016
|
|
|
פרטים לגבי התהליך |
ראיון ראשון עלול להיות טלפוני
לאחר מכן ראיון מקצועי נטו עם 2 חברי הצוות
אם עוברים - ראיון מקצועי (אבל פחות אינטנסיבי) עם ראש הצוות
ולבסוף - בשביל הפרוטוקול - ראיון עם כ"א ומנהל הקבוצה |
|
שאלות מתוך הראיון |
1. Given the 2 atomic (!) functions (set & reset) - implement a lock:
void acquire(int *x);
viod release(int *x);
int set(int *x) {
int p = *x
*x = 1
return p
}
reset(int *x){
*x=0
}
2. Implement a readers/writers lock |
|
תשובות |
הוסף תשובה
|
לצפיה בתשובות
|
|
|
|
|
אוקטובר 2016
|
|
1.
void acquire(int *x){while set(x)==1;}
viod release(int *x){reset(x);}
|
|
|
|
|
|
|
הוסף מידע על החברה
|
עוד מידע על קמינריו :
|
|
יש לכם מה להוסיף ?
|
|
|
|
|
|